# -*- coding: utf-8 -*-
# __author__:heliujiang
# 2022/4/4 11:48
import requests

import config
from common.test_log import create_logger


class Recommend:
    _instance = None
    logger = create_logger()
    def __new__(cls, *args, **kwargs):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance

    def __init__(self, host):
        if host == 'dev':
            self.host = config.DEV_URL
        elif host == 'uat':
            self.host = config.UAT_URL
        elif host == 'pro':
            self.host = config.PRO_URL


    def get_recommend_list(self,test_data,token):
        """
            发送HTTP GET请求以获取推荐页列表。

            参数:
            - test_data: dict, 一个字典，包含以下键：
              - userId: str, 用户ID。
              - seriesCode: str, 车系编码。
              - pageNum：  int    页码
              - pageSize：  int   每页大小
              - modelCode： str   车型编码
              - tabId： number    TABid默认0
              - vin     str       车辆vin
            - token: str, 用于API认证的令牌。

            返回:
            - res: requests.Response对象, 包含HTTP请求的响应。

        """
        url = self.host + '/appstore/goods/recommend/list'
        res = requests.get(url=url, params=test_data, headers={"token": token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res

    def get_banner_list(self,test_data,token):
        """
            发送HTTP GET请求以获取banner列表。

            参数:
            - test_data: dict, 一个字典，包含以下键：
              - seriesCode: str, 车系编码。
              - modelCode： str   车型编码
            - token: str, 用于API认证的令牌。

            返回:
            - res: requests.Response对象, 包含HTTP请求的响应。

                """
        url = self.host + '/appstore/goods/recommend/bannerList'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res

    def get_recommend_type(self,test_data,token):
        """
            发送HTTP GET请求以获取应用类型。

            参数:
            - test_data: dict, 一个字典，包含以下键：
              - type: int, 推荐类型，推荐3
              - seriesCode: str, 车系编码。
            - token: str, 用于API认证的令牌。

            返回:
            - res: requests.Response对象, 包含HTTP请求的响应。

        """
        url = self.host + '/appstore/goods/type/list'
        res = requests.get(url=url, params=test_data, headers={'token': token})
        self.logger.info(f"url:{url} | request: {test_data}")
        self.logger.info(f"Response status code: {res.status_code} | Response text{res.text}")
        return res
